/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package loja.gui.tablemodel;

import java.util.ArrayList;
import java.util.List;
import javax.swing.table.AbstractTableModel;
import loja.dominio.ItemDeVenda;
import loja.gui.VendaForm;

/**
 *
 * @author Administrador
 */
public class ItemDeVendaTableModel extends AbstractTableModel {
    private VendaForm vendas;
    private List<ItemDeVenda> itens;
    private static final String[] COLUNAS = {"Código", "Descrição", "Quantidade", "Subtotal"};

    public ItemDeVendaTableModel() {
        itens = new ArrayList<ItemDeVenda>();
    }

    public void limpar() {
        this.itens = new ArrayList<ItemDeVenda>();
        fireTableDataChanged();
    }

    public ItemDeVenda getItemDeVenda(int rowIndex) {
        return itens.get(rowIndex);
    }

    public int getRowCount() {
        return itens.size();
    }

    public int getColumnCount() {
        return COLUNAS.length;
    }

    @Override
    public String getColumnName(int column) {
        return COLUNAS[column];
    }

    @Override
    public boolean isCellEditable(int rowIndex, int columnIndex) {
        return columnIndex == 2;
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
        ItemDeVenda item = itens.get(rowIndex);

        switch (columnIndex) {
            case 0:
                return item.getProduto().getId();
            case 1:
                return item.getProduto().getCategoria().getCategoria() + " - " + item.getProduto().getMarca().getMarca() + " - " + item.getProduto().getDescricao();
            case 2:
                return item.getQuantidade();
            case 3:
                return item.subTotal();
            default:
                return "Valor Desconhecido";
        }
    }

    public void addItemDeVenda(ItemDeVenda item) {
        itens.add(item);
        fireTableDataChanged();
    }
       public void excluirItemDeVenda(ItemDeVenda item) {
        itens.remove(item);
        fireTableDataChanged();
    }

    @Override
    public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
        ItemDeVenda item = itens.get(rowIndex);
        int quantidade = item.getQuantidade();

        switch(columnIndex) {
            case 0:
                return;
            case 1:
                return;
            case 2:
                try {
                    quantidade = Integer.parseInt(aValue.toString());
                    if(quantidade < 1) {
                        quantidade = item.getQuantidade();
                    }
                } catch (NumberFormatException ex) {
                    quantidade = item.getQuantidade();
                }
                item.setQuantidade(quantidade);
                fireTableDataChanged();
                
            case 3:
                return;
            default:
                return;
        }  
    }



}
